package ec.edu.ups.cidi.siia.plamdep.comunicacionweb.Utils;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.nio.CharBuffer;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class HtmlUtils {
    private ArrayList<String> etiquetas=new ArrayList<String> ();
    /**
     * @param html codigo el que se busca la etiqueta
     * @param RGcomienza //expresion regular de como empieza la etiqueta
     * @param RGtermina //expresion regular de como termina la etiqueta
     * @param recursivo //si envia true busca todas las etiquetas del mismo tipo si envia false solo devuelve la primera etiqueta
     * @param i //este es solo de control siempre debe tener valor 0
     */
    public ArrayList<String> obtenerEtiqueta2(String html,String RGcomienza,String RGtermina,boolean recursivo, int i)
    {
        if(i==0)etiquetas=new ArrayList<String> ();
        Pattern p=Pattern.compile(RGcomienza);
        Matcher m=p.matcher(html); 
        if(m.find())
        {   html=html.substring(m.start(),html.length());
            Pattern p1=Pattern.compile(RGtermina);
            Matcher m1=p1.matcher(html); 
            if(m1.find())
            {
                    String li=html.substring(0, m1.end());
                    etiquetas.add(li);
                    html=html.substring(m1.end(), html.length());
                    if(recursivo)
                    this.obtenerEtiqueta2(html,RGcomienza,RGtermina,recursivo,1);
            }
        }
        return etiquetas;
    }
    public String convertirToISO(String cadenaTexto)
    {
    
       Charset utf8charset = Charset.forName("UTF-8");
    Charset iso88591charset = Charset.forName("ISO-8859-15");

    // Decode UTF-8
    ByteBuffer bb = ByteBuffer.wrap(cadenaTexto.getBytes());
    CharBuffer data = utf8charset.decode(bb);

        // Encode ISO-8559-1
    ByteBuffer outputBuffer = iso88591charset.encode(data);
    byte[] outputData = outputBuffer.array();
    String datos = new String(outputData);
        
        
        
        return datos;
    }
    public String reemplazarCaracteres(String l)
    {
        l=l.replaceAll("%25C3%25B3", "ó");
        l=l.replaceAll("%C3%B3", "ó");
        l=l.replaceAll("%23","#");
        l=l.replaceAll("%3f","?");
        l=l.replaceAll("%25","%");
        l=l.replaceAll("%C3%AD", "í");
        return l;
    }
    
    
     public boolean SaveFile(String FilePath, String FileContent, boolean CleanFileContent)
{
    FileWriter file;
    BufferedWriter writer;
    try
    {
        file = new FileWriter(FilePath, !CleanFileContent);
        writer = new BufferedWriter(file);
        writer.write(FileContent, 0, FileContent.length());
         
        writer.close();
        file.close();
 
        return true;
    } 
    catch (IOException ex) 
    {
        ex.printStackTrace();
    }
        return false;

}
}
